package com.ocean.everyday.d006_checkifmatrixisxmatrix;

/**
 * https://leetcode.cn/problems/check-if-matrix-is-x-matrix/
 * 判断矩阵是否是一个 X 矩阵
 *
 * @author linmiaolai@sanyygp.com<br>
 * @version 1.0<br>
 * @date 2023/01/31 <br>
 */
public class CheckIfMatrixIsXMatrix2 {

    public static void main(String[] args) {
        CheckIfMatrixIsXMatrix2 matrix = new CheckIfMatrixIsXMatrix2();
        int[][] grid = {{2, 0, 0, 1}, {0, 3, 1, 0}, {0, 5, 2, 0}, {4, 0, 0, 2}};
        boolean b = matrix.checkXMatrix(grid);
        System.out.println(b);
    }

    /**
     * 如果一个正方形矩阵满足下述 全部 条件，则称之为一个 X 矩阵 ：
     * <p>
     * 矩阵对角线上的所有元素都 不是 0
     * 矩阵中所有其他元素都是 0
     * 给你一个大小为 n x n 的二维整数数组 grid ，表示一个正方形矩阵。如果 grid 是一个 X 矩阵 ，返回 true ；否则，返回 false 。
     * <p>
     * grid = [[2,0,0,1],[0,3,1,0],[0,5,2,0],[4,0,0,2]]
     * <p>
     * 2 0 0 1
     * 0 3 1 0
     * 0 5 2 0
     * 4 0 0 2
     *
     * @param grid
     * @return
     */
    public boolean checkXMatrix(int[][] grid) {
        // 在对角线上的元素的下标满足： i ==j || i+j+1 = n
        int n = grid.length;
        for (int i = 0; i < n; i++) {
            for (int j = 0; j < n; j++) {
                if (i == j || i + j == n - 1) {
                    if (grid[i][j] == 0) {
                        return false;
                    }
                } else {
                    if (grid[i][j] != 0) {
                        return false;
                    }
                }
            }
        }
        return true;
    }
}
